﻿using System.Linq;
using System.Windows;
using System.Windows.Controls;
using FitnessHelperDB;

namespace FitnessHelperDesktopClient
{
  /// <summary>
  /// Служит для визуализации суперсетов в программах
  /// </summary>
  class ProgrammsSuperSetTemplateSelector : DataTemplateSelector
  {
    #region Свойства
    /// <summary>
    /// Темплейт для упражнения, не входящего в суперсер
    /// </summary>
    public DataTemplate NotSuperSetTemplate { get; set; }

    /// <summary>
    /// Темплейт для первого упражнения в суперсете
    /// </summary>
    public DataTemplate FirstExerciseTemplate { get; set; }

    /// <summary>
    /// Темплейт для промежуточного упражнения в суперсете
    /// </summary>
    public DataTemplate MiddleExerciseTemplate { get; set; }

    /// <summary>
    /// Темплейт для последнего упражнения в суперсете
    /// </summary>
    public DataTemplate LastExerciseTemplate { get; set; }

    #endregion


    #region Переопределение методов DataTemplateSelector
    public override DataTemplate SelectTemplate(object item, DependencyObject container)
    {
      var programmExercise = item as ProgrammExercises;

      if (null == programmExercise ||
          null == programmExercise.SuperSetIndex)
      {
        return NotSuperSetTemplate;
      }

      var a = programmExercise.ProgrammDays.ProgrammExercises.Where(
        pe => pe.SuperSetIndex == programmExercise.SuperSetIndex);

      if (programmExercise.Index == a.Min(pe => pe.Index))
      {
        return FirstExerciseTemplate;
      }
      if (programmExercise.Index == a.Max(pe => pe.Index))
      {
        return LastExerciseTemplate;
      }
      return MiddleExerciseTemplate;
    }
    #endregion
  }
}
